<?php
/**
 * Created by JetBrains PhpStorm.
 * User: Serenity
 * Date: 23-6-11
 * Time: 8:23
 * To change this template use File | Settings | File Templates.
 */

require_once(Config::acquire('Model', null, 'model'));

class Leverancier extends Model
{

     /**
     * initialiseren variabelen
     */

    private $id;
    private $naam;
    private $telefoonnummer;
    private $plaats;

    /**
     * aanmaken van de vriabelen
     */
    public function __construct($id, $naam, $telefoonnummer, $plaats)
    {
        $this->id = $id;
        $this->naam = $naam;
        $this->telefoonnummer = $telefoonnummer;
        $this->plaats = $plaats;

    }

    /**
     * aanmaken van een nieuw item
     */
    public static function create($id, $naam, $telefoonnummer, $plaats)
    {
        {
            if (is_null($id)) {
                return new Leverancier(null, $naam, $telefoonnummer, $plaats);
            }
            return new Leverancier($id, $naam, $telefoonnummer, $plaats);
        }
    }

    /**
     * Query voor deleten van de gegevens uit de gegeven tabel
     */
    public function delete()
    {

        SQL::execute("DELETE FROM `Leverancier` WHERE `Leverancier_ID` = {$this->id}");
    }

    /**
     * gegevens naar een array schrijven.
     */
    public function toArray()
    {
        return array("ID" => $this->id,
                     "Naam" => $this->naam,
                     "TelefoonNummer" => $this->telefoonnummer,
                     "Plaats" => $this->plaats);
    }

     /**
     * Query voor het updaten van de betreffende tabel
     */
    public function update()
    {
        if (is_null($this->id)) {
            SQL::execute("INSERT INTO `leverancier` (

                            `leverancier_Naam` ,
                            `leverancier_TelefoonNummer` ,
                            `leverancier_Plaats`
) VALUE('{$this->naam}','{$this->telefoonnummer}','{$this->plaats}')");

        } else {

            SQL::execute("UPDATE `leverancier`
                          SET`leverancier_Naam`=' {$this->naam}',
                             `leverancier_TelefoonNummer`=' {$this->telefoonnummer}',
                             `leverancier_Plaats`='{$this->plaats}'
                              WHERE`leverancier`.`leverancier_ID`={$this->id}");

        }
    }

    /*
     * lezen van de gegvens van 1 enkel item
     */
    public static function read($id)
    {
        $leverancier = SQL::query("SELECT * FROM `leverancier` WHERE `leverancier_ID` = $id");
        if ($leverancier->isValid()) {
            return new Leverancier(
                $leverancier->fetchField('leverancier_ID'),
                $leverancier->fetchField('leverancier_Naam'),
                $leverancier->fetchField('leverancier_TelefoonNummer'),
                $leverancier->fetchField('leverancier_Plaats')
            );
        }
        return null;
    }

    /**
     * Lezen van de gegevens in een tabel
     */
    public static function readAll()
    {
        $list = array();
        $leverancier = SQL::query("SELECT * FROM `leverancier` ");
        while ($leverancier->isValid()) {
            $list[] = Leverancier::create(
                $leverancier->fetchField('leverancier_ID'),
                $leverancier->fetchField('leverancier_Naam'),
                $leverancier->fetchField('leverancier_TelefoonNummer'),
                $leverancier->fetchField('leverancier_Plaats')
            );
            $leverancier->next();
        }
        return $list;
    }

     /**
     * Setters & getters
     */
    public function setId($id)
    {
        $this->id = $id;
    }

    public function getID()
    {
        return $this->id;
    }

    public function setNaam($naam)
    {
        $this->naam = $naam;
    }

    public function getNaam()
    {
        return $this->naam;
    }

    public function setPlaats($plaats)
    {
        $this->plaats = $plaats;
    }

    public function getPlaats()
    {
        return $this->plaats;
    }

    public function setTelefoonnummer($telefoonnummer)
    {
        $this->telefoonnummer = $telefoonnummer;
    }

    public function getTelefoonnummer()
    {
        return $this->telefoonnummer;
    }


}